[Genuino 101][Johnny-Five] ポテンションメータと LED
車輪開発大好きおたいがです。こんにちは。( 挨拶 )
今回は Genuino 101 ( 以下 Genuino ) のアナログ入力ピンを使用して、PWM 出力を制御してみました。Johnny-Five で実装しています。
動作環境・道具など
- Genuino 101
- USB ケーブル
- 3mm LED ( 2 本足 )
- ブレッドボード
- ジャンパーワイヤ
- ポテンショメータ ( 3 本足 ) ( こんな感じのやつ )
- Windows 7 Pro (64bit)
- Arduino IDE 1.6.9 ( セットアップ記事を参考にしてください )
- Node.js v4.4.7
回路図
サンプルスケッチ ( プログラム ) をボードに書き込む
Genuino に StandardFirmata スケッチを書き込みます。
( 参照 : https://dev.classmethod.jp/hardware/johnny-five-genuino-101-debut/#toc--- )
Johnny-Five 実行用のサンプルプロジェクト作成および実行
Johnny-Five の導入および実行するためのプロジェクトを用意します。任意のプロジェクトディレクトリを作成して移動したあとに、下記コマンドを入力します。
package.json の初期化
$npm init
Johnny-Five のダウンロード
$npm install johnny-five
サンプルコードの作成
var five = require('johnny-five'); // Genuino が接続されているポート番号 ( `/dev/tty*` (Mac/Linux) or `COM*` (Windows) ) var board = new five.Board({ 'port': 'COM8' }); board.on('ready', function() { var sensor = new five.Sensor('A0'); //Genuino 101 のアナログ入力は `A0` ~ `A5` var led = new five.Led(9); //Genuino 101 の 9 ピンは PWM sensor .scale(0, 255) .on('change', function() { console.log('this.value : ' + this.value); // 0~255 console.log('this.raw : ' + this.raw); // 0~1023 led.brightness(this.value); }); });
上記コードでは、Genuino のアナログ入力 A0 ピンをコントロールする Sensor クラスのインスタンスを作成して、scale メソッドにて値の範囲を定義しています。 ポテンションメータをひねることによって .on('change', … ) メソッドで定義したハンドラメソッドが実行され、Sensor インスタンスが保持するポテンションメータの値を取得することができるので、取得した値を Led インスタンスに渡して LED の明るさを変化させる…といったサンプルです。
サンプルコードの実行
$node index.js
実行結果
実行中にポテンションメータをひねったときの出力結果
this.value : 250.26393127441406 this.raw : 1004 this.value : 248.26979064941406 this.raw : 996 this.value : 242.78591918945312 this.raw : 974 this.value : 242.78591918945312 … this.value : 0.4985337257385254 this.raw : 2 this.value : 0.4985337257385254 this.raw : 2 this.value : 0 this.raw : 0
Board.repl に Sensor インスタンスを抽入することで、以下のように任意のタイミングでコマンドを入力して、値を取得することも可能です。
var five = require('johnny-five'); var board = new five.Board({ 'port': 'COM8' }); board.on('ready', function() { var sensor = new five.Sensor('A0'); var led = new five.Led(9); this.repl.inject({ 'sensor' : sensor }); sensor .scale(0, 255) .on('change', function() { led.brightness(this.value); }); });
sensor.raw sensor.value と、それぞれコマンドを打ち込むと、現在の値が出力されます。
$ node index 1470051431595 Connected COM8 1470051436701 Repl Initialized >> sensor.raw 400 >> sensor.value 100.45454406738281